#include "stm32f0xx.h"
#include "delay.h"
#include "task.h"
#include "motor_driver.h"
#include "motor_controller.h"
#include "adc.h"
#include "temperature_controller.h"

void Init(void);

int main(){
    
    /***********系统初始化************/
    Init();  
    InitTaskSystem();       //多任务系统初始化 
    Motor_Init();           //电机驱动初始化
    Encoder_Init();         //编码器初始化
    MotorController_Init(); //电机控制器初始化
    ADC1_Init();            //ADC初始化
    TemperatureController_Init();  //温度控制器初始化  
    
    CreateTask(MotorControlTask,1,10);          //新建电机控制任务，控制周期10ms
    CreateTask(TemperatureControlTask,1,50);    //新建温度控制任务，控制周期50ms
    
    LaunchTaskSchedule();   //启动多任务系统

    SetMotorSpeed(0, 3000);
    SetTemperature(45);
    while(1){
        //Delay_ms(100);
        //temperature_watch=GetTemperature();
        //temperature_set = 
        
        //;
//            /* Test DMA1 TC flag */
//        while((DMA_GetFlagStatus(DMA1_FLAG_TC1)) == RESET ); 
//        
//        /* Clear DMA TC flag */
//        DMA_ClearFlag(DMA1_FLAG_TC1);
    }

}


//中断配置函数
void NVIC_Configuration(void)
{  
	//配置系统滴答
    if (SysTick_Config(SystemCoreClock / 10000))
    { 
        /* Capture error */ 
        while (1);
    }
}


void Init(){
       
    NVIC_Configuration();
    
    //测试PIN
    GPIO_InitTypeDef GPIO_InitStructure;
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
    
    GPIO_SetBits(GPIOA,GPIO_Pin_10);
    
}

